import request from '@/utils/request'
import type {
  Course,
  CourseCategory,
  CreateCourseRequest,
  UpdateCourseRequest,
  CourseListResponse
} from '@/types/api/course'
import type { BaseResponse, PaginationResponse } from '@/types/common/response'

/**
 * 课程管理相关API
 */
export const courseApi = {
  /**
   * 获取课程列表
   * @param params 查询参数
   */
  getCourseList(params: { page: number; pageSize: number; keyword?: string; categoryId?: number }) {
    return request.get<BaseResponse<PaginationResponse<Course>>>('/courses', { params })
  },

  /**
   * 获取课程详情
   * @param id 课程ID
   */
  getCourseDetail(id: number) {
    return request.get<BaseResponse<Course>>(`/courses/${id}`)
  },

  /**
   * 创建课程
   * @param data 课程信息
   */
  createCourse(data: CreateCourseRequest) {
    return request.post<BaseResponse<null>>('/courses', data)
  },

  /**
   * 更新课程
   * @param id 课程ID
   * @param data 课程信息
   */
  updateCourse(id: number, data: UpdateCourseRequest) {
    return request.put<BaseResponse<null>>(`/courses/${id}`, data)
  },

  /**
   * 删除课程
   * @param id 课程ID
   */
  deleteCourse(id: number) {
    return request.delete<BaseResponse<null>>(`/courses/${id}`)
  },

  /**
   * 获取课程分类列表
   */
  getCourseCategories() {
    return request.get<BaseResponse<CourseCategory[]>>('/course-categories')
  },

  /**
   * 创建课程分类
   * @param data 分类信息
   */
  createCourseCategory(data: { name: string; description?: string }) {
    return request.post<BaseResponse<null>>('/course-categories', data)
  },

  /**
   * 更新课程分类
   * @param id 分类ID
   * @param data 分类信息
   */
  updateCourseCategory(id: number, data: { name?: string; description?: string; status?: number }) {
    return request.put<BaseResponse<null>>(`/course-categories/${id}`, data)
  },

  /**
   * 删除课程分类
   * @param id 分类ID
   */
  deleteCourseCategory(id: number) {
    return request.delete<BaseResponse<null>>(`/course-categories/${id}`)
  }
}
